package cn.bby.query.base.ann;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author ben
 * @since 2025/4/15 00:12
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface CacheTable {
    /**
     * 当前缓存对应的物理表名称。
     * 该表需与数据库中的实际表名一致，且使用全限定名：db.schema.name
     */
    String name();

    /**
     * 用于追踪和定位数据行的字段列表。
     * <p>
     * 必须满足以下条件：
     * <ul>
     *   <li>同时存在于VO类及其对应数据库表中</li>
     *   <li>为简单类型字段（非嵌套/复杂结构）</li>
     *   <li>字段值不可变，以确保定位准确性</li>
     * </ul>
     * 主要用于在数据变更时快速定位受影响的数据行并更新缓存。
     */
    String identityField();

}
